Certain computer systems are used in a number of industries, such as the telecommunications industry, for order entry and order fulfillment. Order entry is the process of electronically receiving orders and entering the orders into the computer system, where the orders are stored as one or more entities within the computer system, so that the orders can be electronically fulfilled. Orders can contain data regarding one or more products, pricing of the one or more products, and one or more offers related to the one or more products. Orders can be received from any type of customer, such as businesses and individual consumers. Order fulfillment is the process of electronically fulfilling the orders, once the orders have been entered into the computer system. Order fulfillment generally entails one or more of the following steps: validating the order, interfacing the order to a billing system or subsystem, shipping physical goods, scheduling installation of equipment, installing equipment, and activating services. Order fulfillment can also entail other steps not listed that are part of a process of electronically fulfilling an order.
Prior computer systems would generally include a single static executable process (i.e., instance of a computer program) for electronically fulfilling an entered order. The static executable process, in general, would include a fixed number of steps, with each step performing one or more defined functions. The use of the static executable process in prior computer systems was effective because orders were generally static (i.e., did not change much), there were generally a small number of orders, and there was generally not a lot of variety in orders. Furthermore, because product offers were generally not rolled out more than once a year, the turnaround time for modifying the static executable process in light of new product offers had a minimal impact on an overall effectiveness of the prior computer systems.
However, changes to industries, such as the telecommunications industry, have rendered the single static executable process largely ineffective to handle today's order management challenges. Through the proliferation of technology, as well as the proliferation of services and technologies, orders have, in general, become more dynamic than they were in the past. Today, there are many variables and conditions that can affect an order, and these dynamic variables and conditions make it very difficult to fulfill an order using a static executable process. This is because a static executable process will usually require a significant amount of source code to handle all the different variables and conditions that could potentially affect an order. Furthermore, new product offers are generally rolled out on a much more frequent basis (for example every month, or even every week), which, in general, requires frequent modifications to the source code of the static executable process. Because of shrinking margins allotted for executable process development, the increased turnaround time for modifying source code of static executable processes has become a liability. In addition, due to bundling of one or more products (where the one or more products are offered together, as if they were a single product), an entire order may not be able to go through a single static executable process. Instead, one portion of the order may require a sequence of steps of the static executable process, but another portion may require a different sequence of steps of the static executable process. Such industry changes make it very difficult to utilize a single static executable process within a computer system to fulfill orders; short of building up complexity to levels that become unmanageable.